5
תגובות
<?php
function ChangeValueFile($var,$replace,$path)
{
    $file_arr = file($path);
    foreach ($file_arr as $line_num => $line) {
        $value_var = explode($var.'=',trim($line));
        if (preg_match("#$var#",$line)){
                //echo $var;
                //return $value_var = str_replace($value_var[1],'"'.$replace.'"',$line);
                $fileContent = file_get_contents($path);
                //echo $fileContent;
                $value_var = str_replace($value_var[1],'"'.$replace.'"',$fileContent);
               
                if (file_put_contents($path, $value_var)) return 1;
               
                die();
        }else{return "Not Found variables.";}
    }
}

ChangeValueFile("name","sadasd",'includes/config.ini');
$ini_array = parse_ini_file('includes/config.ini', true);
print_r($ini_array);
?>


אני מנסה כבר יומיים ליצור פונקצייה שמחפש שורה עם המילה נגיד name ותחליף את הערך שלו ותכניס את זה לקובץ בלי שיפגע שאר הטקסט.

בבקשה עזרה !

5 תשובות

avatar ענה drorzeno ב 02 ליולי 2012 #

מישהו יכול לענות לי בבקשה ?

avatar ענה iiddaannyy ב 02 ליולי 2012 #

לא הבנתי מה אתה מנסה.
תן דוגמה לקלט ולמה שהוא צריך להפוך בסופו של דבר.

avatar ענה drorzeno ב 02 ליולי 2012 #

נגיד יש בקובץ דבר כזה:

; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"


ואני רוצה לשנות את הערך של path בלי שיפגע כל הקובץ.

avatar ענה cthulhu ב 02 ליולי 2012 #

ככל הנראה, אתה רוצה לשנות את הערך של המפתח (כמו path) על-פי מיקומו בסקציה (second/first_section). לכן קודם כל אתה צריך לבנות פונקציה מנוגדת לפונקציה parse_ini_file שיש ב-php. אתה צריך פונקציה שתהפוך את המערך לקובץ ini בחזרה. כל הגישה שלך עכשיו לא נכונה. בקובץ ini יש חלקים שונים, ומה שאתה מנסה לעשות כרגע - מסובך ולא כ"כ אוניברסלי.

avatar ענה iiddaannyy ב 02 ליולי 2012 #

בדיוק, תשתמש ב-parse_ini_file. זה הופך את העניין לפשוט יותר.
תהפוך עם הפונקציה את הקובץ למערך, תבצע את השינוי שאתה צריך במערך וממערך תחזיר את השינויים לסטרינג ותכתוב אותו לקובץ.